﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DAL.Interfejsi;
using sistem;
using MySql.Data.MySqlClient;

namespace DAL
{
    partial class DAL
    {
        public class PrisustvoDAO : IDaoCrud<Prisustvo>
        {
            #region IDaoCrud<Prisustvo> Members
            protected MySqlCommand c;
            public long create(Prisustvo entity)
            {
                try
                {
                    c = new MySqlCommand("insert into prisustvo (ucenik_id, cas_id, prisutnost, opravdanost, dodatne_napomene) values (@UcenikID, @CasID, @Prisutnost, @Opravdanost, @DodatneNapomene);", con);
                    c.Parameters.AddWithValue("@UcenikID", entity.UcenikID);
                    c.Parameters.AddWithValue("@CasID", entity.CasID);
                    c.Parameters.AddWithValue("@Prisutnost", entity.Prisutnost);
                    c.Parameters.AddWithValue("@Opravdanost", entity.Opravdanost);
                    c.Parameters.AddWithValue("@DodatneNapomene", entity.DodatneNapomene);
                    c.ExecuteNonQuery();
                    return c.LastInsertedId;
                }
                catch (Exception e)
                {
                    throw e;
                }
            }

            public List<Prisustvo> getAll()
            {
                try
                {
                    c = new MySqlCommand("select * from prisustvo;", con);
                    MySqlDataReader r = c.ExecuteReader();
                    List<Prisustvo> prisustva = new List<Prisustvo>();
                    while (r.Read())
                    {
                        Prisustvo prisustvo = new Prisustvo();
                        prisustvo.ID = r.GetInt32("id");
                        prisustvo.UcenikID = r.GetInt32("ucenik_id");
                        prisustvo.CasID = r.GetInt32("cas_id");
                        prisustvo.Prisutnost = r.GetBoolean("prisutnost");
                        prisustvo.Opravdanost = r.GetBoolean("opravdanost");
                        prisustvo.DodatneNapomene = r.GetString("dodatne_napomene");
                        prisustva.Add(prisustvo);
                    }
                    return prisustva;
                }
                catch (Exception e)
                {
                    throw e;
                }
            }

            public Prisustvo read(Prisustvo entity)
            {
                try
                {
                    c = new MySqlCommand("select * from prisustvo where id = @ID;", con);
                    c.Parameters.AddWithValue("@ID", entity.ID);
                    MySqlDataReader r = c.ExecuteReader();
                    Prisustvo prisustvo = new Prisustvo();
                    if (r.Read())
                    {
                        prisustvo.ID = r.GetInt32("id");
                        prisustvo.UcenikID = r.GetInt32("ucenik_id");
                        prisustvo.CasID = r.GetInt32("cas_id");
                        prisustvo.Prisutnost = r.GetBoolean("prisutnost");
                        prisustvo.Opravdanost = r.GetBoolean("opravdanost");
                        prisustvo.DodatneNapomene = r.GetString("dodatne_napomene");
                    }
                    return prisustvo;
                }
                catch (Exception e)
                {
                    throw e;
                }
            }

            public Prisustvo update(Prisustvo entity)
            {
                try
                {
                    c = new MySqlCommand("UPDATE prisustvo SET ucenik_id = @UcenikID, cas_id = @CasID, prisutnost = @Prisutnost, opravdanost = @Opravdanost, dodatne_napomene = @DodatneNapomene where id = @ID;", con);
                    c.Parameters.AddWithValue("@UcenikID", entity.UcenikID);
                    c.Parameters.AddWithValue("@CasID", entity.CasID);
                    c.Parameters.AddWithValue("@Prisutnost", entity.Prisutnost);
                    c.Parameters.AddWithValue("@Opravdanost", entity.Opravdanost);
                    c.Parameters.AddWithValue("@DodatneNapomene", entity.DodatneNapomene);
                    c.Parameters.AddWithValue("@ID", entity.ID);
                    c.ExecuteNonQuery();
                    return entity;
                }
                catch (Exception e)
                {
                    throw e;
                }
            }

            public void delete(Prisustvo entity)
            {
                try
                {
                    c = new MySqlCommand("delete from prisustvo where id = @ID;", con);
                    c.Parameters.AddWithValue("@ID", entity.ID);
                    c.ExecuteNonQuery();
                }
                catch (Exception e)
                {
                    throw e;
                }
            }

            public Prisustvo getById(int id)
            {
                try
                {
                    c = new MySqlCommand("select * from prisustvo where id = @ID;", con);
                    c.Parameters.AddWithValue("@ID", id);
                    MySqlDataReader r = c.ExecuteReader();
                    Prisustvo prisustvo = new Prisustvo();
                    if (r.Read())
                    {
                        prisustvo.ID = r.GetInt32("id");
                        prisustvo.UcenikID = r.GetInt32("ucenik_id");
                        prisustvo.CasID = r.GetInt32("cas_id");
                        prisustvo.Prisutnost = r.GetBoolean("prisutnost");
                        prisustvo.Opravdanost = r.GetBoolean("opravdanost");
                        prisustvo.DodatneNapomene = r.GetString("dodatne_napomene");
                    }
                    return prisustvo;
                }
                catch (Exception e)
                {
                    throw e;
                }
            }

            public List<Prisustvo> getByExample(string name, string value)
            {
                try
                {
                    c = new MySqlCommand("select * from prisustvo where @Kolona = @Vrijednost;", con);
                    c.Parameters.AddWithValue("@Kolona", name);
                    c.Parameters.AddWithValue("@Vrijednost", value);
                    MySqlDataReader r = c.ExecuteReader();
                    List<Prisustvo> prisustva = new List<Prisustvo>();
                    while (r.Read())
                    {
                        Prisustvo prisustvo = new Prisustvo();
                        prisustvo.ID = r.GetInt32("id");
                        prisustvo.UcenikID = r.GetInt32("ucenik_id");
                        prisustvo.CasID = r.GetInt32("cas_id");
                        prisustvo.Prisutnost = r.GetBoolean("prisutnost");
                        prisustvo.Opravdanost = r.GetBoolean("opravdanost");
                        prisustvo.DodatneNapomene = r.GetString("dodatne_napomene");
                        prisustva.Add(prisustvo);
                    }
                    return prisustva;
                }
                catch (Exception e)
                {
                    throw e;
                }
            }
            #endregion
        }
    }
}
